#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__author__ = "Administrator"
__name__="trans_server"
__date__="2016/7/8"
__time__="9:57"
"""
import SocketServer
import os

class Myserver(SocketServer.BaseRequestHandler):
    def handle(self):# 重写handle方法
        base_path='D:\ISO'  # 服务器端存放根路径
        conn = self.request
        print 'connected...'
        while True:
            pre_data = conn.recv(1024)
            # 从客户端获取请求方法、文件名、文件大小
            cmd,file_name,file_size = pre_data.split('|')
            # 已接收的文件大小
            recv_size = 0
            # 拼接上传文件路径
            file_dir = os.path.join(base_path,file_name)
            # 写文件
            f = file(file_dir,'wb')
            Flag = True
            while Flag: # 收文件--写文件
                # 未上传完毕
                if int(file_size)>recv_size:    # 文件大小大于已接收文件大小
                    # 最多接收1024，可能接收的小于1024
                    data = conn.recv(1024)
                    recv_size += len(data)
                    # 写入文件
                    f.write(data)
                else:
                    # 上传完毕，则退出循环
                    recv_size = 0
                    Flag = False

            print 'upload sucessed.'
            f.close()
instance = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),Myserver)
instance.serve_forever()
